#ifndef ManejadorArchivos_H
#define ManejadorArchivos_H

#include <stdbool.h>
#include <stddef.h>

/* ******************************************************************
 *                DEFINICION DE LOS TIPOS DE DATOS                  *
 * *****************************************************************/

typedef struct _ManejadorArchivos ManejadorArchivos_t;

/* *****************************************************************
 *                 PRIMITIVAS DEL ManejadorArchivos				   *
 * *****************************************************************/

// Crea un ManejadorArchivos.
// Post: devuelve un ManejadorArchivos o NULL en caso de error.
ManejadorArchivos_t* ManejadorArchivos_crear(char* ruta);

// Destruye el ManejadorArchivos, cierra el archivo.
void ManejadorArchivos_destruir(ManejadorArchivos_t * manejadorArchivos);

// Devuelve el nombre del archivo con el cual se está trabajando o NULL
// en caso de error.
char* ManejadorArchivos_nombreDelArchivo(ManejadorArchivos_t* ManejadorArchivos);

// Devuelve el nombre del archivo con el cual se está trabajando pero 
// sin extensión, o NULL en caso de error.
char* ManejadorArchivos_nombreDelArchivoSinExt(ManejadorArchivos_t* ManejadorArchivos);

// Lee el archivo hasta el '\n' o fin del mismo. Devuelve NULL en caso
// de error.
char* ManejadorArchivos_leer(ManejadorArchivos_t* ManejadorArchivos);

// Devuelve true si terminó de leer el archivo y false en cualquier otro caso.
bool ManejadorArchivos_terminoDeLeer(ManejadorArchivos_t* ManejadorArchivos);


#endif //  ManejadorArchivos_H
